/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package studente;

import ejb.GestioneCorsiLocal;
import it.uninsieme.common.Utility;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpSession;
import jpa.Corsi;
import jpa.Iscrizione;

/**
 *
 * @author Administrator
 */
@ManagedBean(name = "ListaCorsi")
@RequestScoped
public class ListaCorsi {

    @EJB
    GestioneCorsiLocal gcorsi;

    private List<SelectItem> listaCorsi;
    private List<SelectItem> mieiCorsi;
    private List<Corsi> corsi;
    private List<Iscrizione> iscrizioni;
    private String studenteId;

    public ListaCorsi() {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
        studenteId = session.getAttribute("id").toString();
    }

    public String getStudenteId() {
        return studenteId;
    }

    public void setStudenteId(String studenteId) {
        this.studenteId = studenteId;
    }

    public Collection<SelectItem> getListaCorsi() {
        listaCorsi = new ArrayList<>();
        corsi = gcorsi.listaCorsi();
        for (Corsi p : corsi) {
            String text = p.getNome() + " - tenuto nella Sede:" + p.getSedeid();
            listaCorsi.add(new SelectItem(p.getId(), text));
        }
        Utility.ordinaListaLabel(listaCorsi);
        return Collections.unmodifiableCollection(listaCorsi);
    }

    public void setListaCorsi(List<SelectItem> listaCorsi) {
        this.listaCorsi = listaCorsi;
    }

    public Collection<SelectItem> getMieiCorsi() {
        iscrizioni = gcorsi.listaIscrizioni(new Integer(studenteId));
        mieiCorsi = new ArrayList<>();
        if (iscrizioni == null) {
            return Collections.unmodifiableCollection(mieiCorsi);
        }
        for (Iscrizione i : iscrizioni) {
            Corsi corso = gcorsi.getCorso(i.getCorsiid());
            if (corso == null) {
                continue;
            }
            String nome = gcorsi.getCorso(i.getCorsiid()).getNome();
            mieiCorsi.add(new SelectItem(i.getCorsiid(), nome));
        }
        // TODO da sistemare l'associazione
        return Collections.unmodifiableCollection(mieiCorsi);
    }

}
